package com.ldzhao.blog.test;

import io.undertow.Undertow;
import io.undertow.server.handlers.resource.ClassPathResourceManager;
import io.undertow.websockets.WebSocketConnectionCallback;
import io.undertow.websockets.core.AbstractReceiveListener;
import io.undertow.websockets.core.BufferedTextMessage;
import io.undertow.websockets.core.WebSocketChannel;
import io.undertow.websockets.core.WebSockets;
import io.undertow.websockets.spi.WebSocketHttpExchange;

import static io.undertow.Handlers.*;

public class WebSocketServer {

    public static void main(final String[] args) {
        Undertow server = Undertow
                .builder()
                .addListener(8080, "0.0.0.0")
                .setHandler(
                        path().addPrefixPath("/websocket",
                                websocket(new WebSocketConnectionCallback() {

                                    public void onConnect(
                                            WebSocketHttpExchange exchange,
                                            WebSocketChannel channel) {
                                        channel.getReceiveSetter().set(
                                                new AbstractReceiveListener() {

                                                    @Override
                                                    protected void onFullTextMessage(
                                                            WebSocketChannel channel,
                                                            BufferedTextMessage message) {
                                                        WebSockets.sendText(
                                                                message.getData(),
                                                                channel, null);
                                                    }
                                                });
                                        channel.resumeReceives();
                                    }
                                })).addPrefixPath(
                                "/",
                                resource(
                                        new ClassPathResourceManager(
                                                WebSocketServer.class
                                                        .getClassLoader(),
                                                WebSocketServer.class
                                                        .getPackage()))
                                        .addWelcomeFiles("index.html")))
                .build();
        server.start();

    }

} 